home *** CD-ROM | disk | FTP | other *** search
/ Scene Storm / Scene Storm - Volume 1.iso / coding / asm / demos / xmasdemo / x-mas.s < prev    next >
Text File  |  1980-01-03  |  6KB  |  313 lines

  1.  
  2. **    X-MAS SURPRICE
  3. **    CODE AND GRAPHICS BY CRADON/MATRIX (ASM-ONE FORMAT)
  4.  
  5. *******************************************************************************
  6.  
  7.     SECTION    A,CODE_C
  8.  
  9. START    MOVEM.L    D0-A6,-(A7)
  10.     MOVE.W    $DFF01C,INTENA
  11.     MOVE.W    $DFF002,DMACON
  12.     MOVE.W    $DFF010,ADKCON
  13.     MOVE.W    #%0111111111111111,$DFF096
  14.     MOVE.W    #%0111111111111111,$DFF09A
  15.     MOVE.W    #%0111111111111111,$DFF09C
  16.     JSR    FIELDS
  17.     MOVE.L     $6C,OLDIRQ
  18.     MOVE.L     #MYIRQ,$6C
  19.     MOVE.W    #%1000001111000000,$DFF096
  20.     MOVE.W     #%1100000000100000,$DFF09A
  21. LOOP    BTST    #6,$BFE001
  22.     BNE.B    LOOP
  23. ENDE    MOVE.W    #%0111111111111111,$DFF096
  24.     MOVE.W    #%0111111111111111,$DFF09A
  25.     MOVE.W    #%0111111111111111,$DFF09C
  26.     MOVE.L    OLDIRQ,$00006C
  27.     MOVE.W    DMACON,D0            
  28.     OR.W    #$8000,D0            
  29.     MOVE.W    D0,$DFF096
  30.     MOVE.W    ADKCON,D0            
  31.     OR.W    #$8000,D0
  32.     MOVE.W    D0,$DFF09E
  33.     MOVE.W    INTENA,D0            
  34.     OR.W    #$C000,D0
  35.     MOVE.W    #$7FFF,$DFF09C
  36.     MOVE.W    D0,$DFF09A
  37.     CLR.W    $DFF088
  38.     MOVEM.L    (A7)+,D0-A6
  39.     RTS
  40.  
  41. ** DUAL PLAYFIELDS ************************************************************
  42.  
  43. FIELDS    LEA    FLD1,A0
  44.     MOVE.L    #SCREEN,D0
  45.     MOVE.L    #3,D1
  46. LOOP1    MOVE.W    D0,6(A0)
  47.     SWAP    D0
  48.     MOVE.W    D0,2(A0)
  49.     SWAP    D0
  50.     ADD.L    #10240,D0
  51.     ADD.L    #8,A0
  52.     SUBQ.L    #1,D1
  53.     BNE.S    LOOP1
  54.     LEA     FLD2,A0
  55.     MOVE.L  #SCREEN2,D0
  56.     MOVE.W  D0,6(A0)
  57.     SWAP    D0
  58.     MOVE.W  D0,2(A0)
  59.     SWAP    D0
  60.     RTS
  61.  
  62. ** A SMALL 3D STARFIELD RUTINE ************************************************
  63.  
  64. FIELD    BTST    #14,$DFF002
  65.     BNE.S    FIELD
  66.     MOVE.W    #$0100,$DFF040
  67.     MOVE.L    #$FFFFFFFF,$DFF044
  68.     MOVE.L    SCREEN_ADRESS(PC),$DFF054
  69.     CLR.W    $DFF066
  70.     CLR.W    $DFF042
  71.     MOVE.W    #[512*64+320/16],$DFF058
  72.     LEA.L    POINTS(PC),A1
  73. PLTLOOP    CMP.W    #$FFFF,(A1)
  74.     BEQ.W    PLOTOUT    
  75.     MOVE.W    (A1),D0
  76.     MOVE.W    2(A1),D1
  77.     MOVE.W    4(A1),D2
  78.     ADD.W    XDELTA,D0
  79.     ADD.W    YDELTA,D1
  80.     ADD.W    ZDELTA,D2
  81. BORDER    CMP.W    #319,D0
  82.     BLE.B    .XHI_OK
  83.     SUB.W    #319,D0
  84. .XHI_OK    CMP.W    #0,D0
  85.     BHI.B    .XLO_OK
  86.     ADD.W    #319,D0
  87. .XLO_OK    CMP.W    #250,D1
  88.     BLE.B    .YLO_OK            
  89.     SUB.W    #250,D1
  90. .YLO_OK    CMP.W    #0,D1
  91.     BGE.B    .YHI_OK
  92.     ADD.W    #250,D1    
  93. .YHI_OK    CMP.W    #50,D2
  94.     BHI.B    .ZFR_OK
  95.     ADD.W    #69,D2
  96. .ZFR_OK    CMP.W    #120,D2
  97.     BLS.B    .ZBK_OK        
  98.     SUB.W    #69,D2
  99. .ZBK_OK    MOVE.W    D0,(A1)
  100.     MOVE.W    D1,2(A1)
  101.     MOVE.W    D2,4(A1)
  102.     SUB.W    XCENTER,D0
  103.     SUB.W    YCENTER,D1
  104.     MULS    ZOOM,D0
  105.     MULS    ZOOM,D1
  106.     DIVS    D2,D0
  107.     DIVS    D2,D1
  108.     ADD.W    XCENTER,D0
  109.     ADD.W    YCENTER,D1
  110.     MOVE.L    SCREEN_ADRESS(PC),A0
  111.     MOVE.W    #256,D3
  112.     SUBI.W    D1,D3
  113.     MULU.W    #40,D3
  114.     ADD.L    D3,A0
  115.     CMP.W    #16,D0
  116.     BLT.B    .XREST
  117.     MOVE.W    D0,D1
  118.     LSR.W    #4,D1
  119.     LSL.W    #4,D1
  120.     SUB.W    D1,D0
  121.     LSR.W    #3,D1
  122.     ADD.W    D1,A0
  123. .XREST    MOVE.W    #$8000,D1
  124.     ROR.W    D0,D1
  125. .WAIT    BTST    #14,$DFF002
  126.     BNE.S    .WAIT
  127.     CMP.W    #100,D2
  128.     BHI.B    DARK1
  129.     CMP.W    #70,D2
  130.     BHI.B    DARK2
  131. LIGHT    ORI.W    D1,(A0)
  132.     BRA.S    PLOTFIN
  133. DARK1    ADDI.L    #[256*40],A0
  134.     ORI.W    D1,(A0)
  135.     BRA.S    PLOTFIN
  136. DARK2    ORI.W    D1,(A0)
  137.     ADDI.L    #[256*40],A0
  138.     ORI.W    D1,(A0)
  139. PLOTFIN    ADDQ.L    #6,A1
  140.     JMP    PLTLOOP
  141. PLOTOUT    RTS    
  142.  
  143. ** FLIP BETWEEN FRAMESBUFFERS *************************************************
  144.  
  145. FLIP_SCREEN
  146.     CMP.L     #SCREEN1,SCREEN_ADRESS        
  147.     BEQ.S    FLIP_TO_SCREEN2
  148.     LEA.L    FLD2,A0
  149.     MOVE.L    #SCREEN2,D0
  150.     MOVE.W    D0,6(A0)
  151.     SWAP     D0
  152.     MOVE.W    D0,2(A0)
  153.     MOVE.L    #SCREEN2+[256*40],D0
  154.     MOVE.W    D0,14(A0)
  155.     SWAP     D0
  156.     MOVE.W    D0,10(A0)
  157.     MOVE.L    #SCREEN1,SCREEN_ADRESS    
  158.     RTS
  159. FLIP_TO_SCREEN2
  160.     LEA.L    FLD2,A0
  161.     MOVE.L    #SCREEN1,D0
  162.     MOVE.W    D0,6(A0)
  163.     SWAP     D0
  164.     MOVE.W    D0,2(A0)
  165.     MOVE.L    #SCREEN1+[256*40],D0
  166.     MOVE.W    D0,14(A0)
  167.     SWAP     D0
  168.     MOVE.W    D0,10(A0)
  169.     MOVE.L    #SCREEN2,SCREEN_ADRESS
  170.     RTS
  171.  
  172. ** THIRD LEVEL INTERRUPT ******************************************************
  173.  
  174. MYIRQ    MOVEM.L    D0-A6,-(A7)
  175.     MOVE.W    $DFF01E,D0
  176.     BTST    #5,D0
  177.     BNE.B    RESTART
  178.     MOVE.W    D0,$DFF09C
  179.     MOVEM.L    (A7)+,D0-A6         
  180.     RTE
  181. RESTART    MOVE.L    #COPPER,$DFF084
  182.     MOVE.B    #$00,$DFF08A
  183.     JSR    FIELD
  184.     JSR    FLIP_SCREEN
  185.     MOVE.W    #$20,$DFF09C
  186.     MOVEM.L    (A7)+,D0-A6         
  187.     RTE
  188.  
  189. ** DATA ***********************************************************************
  190.     
  191. XDELTA    DC.W    0
  192. YDELTA    DC.W    -1
  193. ZDELTA    DC.W    0
  194. OLDIRQ    DC.L    0
  195. INTENA    DC.W    0
  196. DMACON    DC.W    0
  197. ADKCON    DC.W    0
  198. SCREEN_ADRESS
  199.     DC.L    SCREEN1
  200. XCENTER    DC.W    159
  201. YCENTER    DC.W    128
  202. ZOOM    DC.W    50
  203.  
  204. POINTS    DC.W    1,1,50    
  205.     DC.W    319,2,63
  206.     DC.W    20,249,76    
  207.     DC.W    200,180,88
  208.     DC.W    316,171,91    ; 5
  209.     DC.W    159,70,54
  210.     DC.W    65,23,66
  211.     DC.W    66,190,79
  212.     DC.W    188,101,81
  213.     DC.W    35,135,94    ; 10
  214.     DC.W    269,221,56
  215.     DC.W    176,167,69
  216.     DC.W    44,96,71
  217.     DC.W    312,120,84
  218.     DC.W    149,49,96    ; 15
  219.     DC.W    99,120,59
  220.     DC.W    17,160,62
  221.     DC.W    165,181,74
  222.     DC.W    143,163,87
  223.     DC.W    319,3,59    ; 20
  224.     DC.W    205,128,62
  225.     DC.W    142,129,65
  226.     DC.W    255,179,68
  227.     DC.W    37,70,71
  228.     DC.W    12,244,74    ; 25
  229.     DC.W    66,138,77
  230.     DC.W    166,33,80
  231.     DC.W    319,145,83    
  232.     DC.W    167,100,86    
  233.     DC.W    279,21,89    ; 30
  234.     DC.W    55,40,92
  235.     DC.W    1,67,95
  236.     DC.W    240,250,98
  237.     DC.W    50,3,50
  238.     DC.W    2,30,63        ; 45
  239.     DC.W    80,200,75
  240.     DC.W    191,1,88
  241.     DC.W    85,66,91
  242.     DC.W    240,231,53
  243.     DC.W    200,20,65    ; 50
  244.     DC.W    132,240,78
  245.     DC.W    170,185,51
  246.     DC.W    36,101,54
  247.     DC.W    3,1,56
  248.     DC.W    312,158,58    ; 60
  249.     DC.W    150,76,61
  250.     DC.W    278,9,63
  251.     DC.W    300,40,66
  252.     DC.W    55,110,69
  253.     DC.W    40,110,72    ; 65
  254.     DC.W    1,128,75
  255.     DC.W    30,240,78
  256.     DC.W    100,3,81
  257.     DC.W    180,109,84
  258.     DC.W    240,20,87    ; 70
  259.     DC.W    319,4,90
  260.     DC.W    11,169,93
  261.     DC.W    2,30,96
  262.     DC.W    1,1,99
  263.     DC.W    30,190,101    ; 85
  264.     DC.W    50,249,103
  265.     DC.W    316,249,106
  266.     DC.W    167,115,109
  267.     DC.W    40,100,111
  268.     DC.W    179,99,115    ; 90
  269.     DC.W    $FFFF        ; END SIGNAL
  270.  
  271. ** COPPERLIST *****************************************************************
  272.  
  273.     SECTION    B,DATA_C
  274.  
  275. COPPER    DC.W    $0106,$0000,$01FC,$0000
  276.     DC.W    $008E,$2C81,$0090,$2CC1
  277.     DC.W    $0092,$0038,$0094,$00D0
  278.     DC.W    $0102,$0000,$0104,%0000000001000000
  279.     DC.W    $0108,$0000,$010A,$0000
  280.     DC.W    $0120,$0000,$0122,$0000
  281.  
  282. COLOUR    DC.W    $0180,$0000,$0182,$0FFF
  283.     DC.W    $0184,$0CDE,$0186,$09BD
  284.     DC.W    $0188,$069C,$018A,$047B
  285.     DC.W    $018C,$025A,$018E,$0049
  286.     DC.W    $0190,$0000,$0192,$0FFF
  287.     DC.W    $0194,$0444,$0196,$0999
  288.     DC.W    $0198,$0500,$019A,$0400
  289.     DC.W    $019C,$0300,$019E,$0200
  290.  
  291. ; DUAL PLAYFIELD
  292.  
  293. FLD1:    DC.W    $00E0,$0000,$00E2,$0000    ;1
  294.     DC.W    $00E8,$0000,$00EA,$0000    ;3
  295.     DC.W    $00F0,$0000,$00F2,$0000    ;5
  296.  
  297. FLD2:    DC.W    $00E4,$0000,$00E6,$0000    ;2
  298.     DC.W    $00EC,$0000,$00EE,$0000    ;4
  299.     DC.W    $00F4,$0000,$00F6,$0000    ;6
  300.  
  301.     DC.W    $3001,$FF00;,$0100,$2200
  302.     DC.W    $3011,$FFFE,$0100,%0101010000000000
  303.     DC.W    $FFE1,$FFFE,$2901,$FF00
  304.     DC.W    $0100,$0200,$FFFF,$FFFE
  305.  
  306. ** SCREEN *********************************************************************
  307.  
  308. SCREEN1    BLK.B    20512,$00
  309. SCREEN2    BLK.B    20512,$00
  310.  
  311. SCREEN    INCBIN    "work:prog/SOURCE3/MOONSCAPE.BIT"
  312.  
  313.